import * as ddcode from "dingtalk-jsapi";
import moment from "moment";

// 采购入库单
let app = getApp();

Page({
  data: {
    index: 0,

    id:"",  //单据编号
    codedj: "",
    date: '',
    checked: true,
    defaultChecked: false,
    checked2: true,
    allChecked: false,  // 用于记录全选复选框的选中状态
    indeterminate: true,
    checkedArr: [],   // 用于记录复选框的选中状态
    wuliaomx: "物料",
    showContent: true, // 初始状态为显示
    wuliaoListfenjie:[],
    wuliaoList: [
       { id: 1, selected: false },
       { id: 2, selected: false },
    ],

    showBigImage: false, //是否展示大图片
    
    currentIndex: 0, // 添加 currentIndex 变量并初始化为 0 上一个下一个

    basicUnitQuantities:"",   //基本单位数量

    orderMaterialCode:"",   //订单明细

    materialCodesfenjie:"",   //分解明细

    resultList: [
      {
        fenjieItems: [
          { id: 1, selected: false },
          { id: 2, selected: false },
        ]
      },
      {
        orderItem: {}
      },
    ],

    searchInput:"",   //用于保存搜索框的值
    
    hangidList:"",

    currentId:""

  },


  onLoad(options) {
    var that = this;
    var date = new Date();
    that.setData({
      date: date.getFullYear() + '-' + ((date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + '-' + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()),
    })
    // 接收purchaseStockin传过来的数据
    if (options.item) {
      that.setData({
        item: JSON.parse(options.item),
        code: JSON.parse(options.item)['FID'],
        currentId: JSON.parse(options.item)['currentContentId']
      })

      console.log("接收purchaseStockin传过来的数据item",that.data.item);
      console.log("接收purchaseStockin传过来的数据code",that.data.code);
      console.log("接收purchaseStockin传过来的数据currentId",that.data.currentId);
    }

    that.getPurchaseInquire('');
    // that.getPurchaseFenjie()

  },

  onShow() {
    //  console.log("sssssssss")
    var that = this;
    // 在 onShow 生命周期函数中获取页面栈
    const pages = getCurrentPages();
    const currPage = pages[pages.length - 1]; // 获取当前页面实例对象

    // 从当前页面获取数据
    const savedData = currPage.data.savedData || {};
    const savedIndex = currPage.data.savedIndex;

    // 如果 savedIndex 有效，则更新 wuliaoList 中对应索引的数据
    if (savedIndex !== undefined && savedIndex !== null) {
      var wuliaoList = that.data.wuliaoList;
      // 假设 savedData 是一个包含要更新数据的对象
      wuliaoList[savedIndex] = savedData;
      // 更新页面数据
      this.setData({
        wuliaoList,
      });
    }

  },

  // 扫码
  onSearchShop() {
    const that = this;
    dd.scan({
        type: 'qr',
        success: (res) => {
            console.log("扫码结果", res.code);
            that.onSearchInput({ detail: { value: res.code } }); // 调用输入框值改变事件，并传入扫码结果
        },
        fail: (err) => {
            // 扫码失败后的回调函数，可以根据实际需求进行处理
        }
    });
  },

// 图片的显示与隐藏
  showImage(e) {
    const src = e.currentTarget.dataset.src; // 获取被点击图片的路径
    console.log("aaaaaaaaaaaaaaaaaaaaa",src);
    this.setData({
      bigImageSrc: src, // 将图片路径赋值给变量 bigImageSrc
      showBigImage: true // 显示放大后的图片区域
    });
  },
  hideImage() {
    this.setData({
      showBigImage: false
    });
  },

  // 获取输入内容进行搜索
  onSearchInput(e){
    console.log("e===>>",e)
    var that = this;
    that.setData({
      searchInput:e,
      page:1,
      dowm:true,
      purchaseOrderList:[]
    })
    
    that.getPurchaseInquire();

  },

// 用于监听输入框值改变事件
onSearchInput(e) {
  var that = this;
  var searchTerm = e.detail.value.trim(); // 获取输入框的搜索内容并去除首尾空格
  console.log("输入框用来搜索的内容", searchTerm);

  // 清除之前的搜索定时器
  clearTimeout(that.data.searchTimer);

  // 设置一个新的定时器，在用户停止输入300毫秒后执行搜索操作
  var searchTimer = setTimeout(function() {
      that.setData({
          searchTimer: null // 清空定时器
      });

       that.getPurchaseInquire(searchTerm); // 执行搜索操作sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
 
      }, 300);

  // 将定时器存储在数据中
  that.setData({
      searchTimer: searchTimer
  });
},

// 清除搜索框内容
onSearchClear(e) {
  var that = this;
  that.setData({
    searchInput: '', // 清空搜索框内容
    page: 1,
    dowm: true,
    purchaseOrderList: []
  });
},


  // mergeData: function(orderData, fenjieData) {
  //   let mergedData = [];
    
  //   // 遍历订单明细数据
  //   orderData.forEach(function(orderItem) {
  //     // 遍历分解明细数据
  //     fenjieData.forEach(function(fenjieItem) {
  //       // 如果订单明细和分解明细中的物料编码相同，则将它们合并为一个对象
  //       if (orderItem['物料编码'] === fenjieItem['生产对象']) {
  //         mergedData.push({
  //           orderItem: orderItem,
  //           fenjieItem: fenjieItem
  //         });
  //       }
  //     });
  //   });
  
  //   console.log("合并的数据qqqqqqqqqqqq",mergedData);

  //   // 返回合并后的数据
  //   return mergedData;

  // },


// 订单明细
getPurchaseInquire(searchTerm) {
  var that = this;
  var fidpd = that.data.code
  console.log("订单明细数据fid",fidpd);
  var currentIdpd = that.data.currentId
  console.log("订单明细数据currentId",currentIdpd);


  let filterString = "";

  // 如果搜索框有内容，则设置过滤条件为 FBillNo like '%searchTerm%'
  // 否则，设置过滤条件为空字符串，表示不对 FBillNo 字段进行过滤
  filterString = searchTerm ? "F_ZYKJ_Base1.fnumber like '%" + searchTerm + "%'" : "F_ZYKJ_Base1.fnumber like '%%'";


  var data = JSON.stringify(
    {
      "xx": {
        "formId": "ZYKJ_SCRWD",
        "fields": [
          "F_ZYKJ_SCRWD_Entry_FEntryID","F_ZYKJ_BaseProperty","F_ZYKJ_Base1.fnumber","F_ZYKJ_BaseProperty1","F_ZYKJ_CheckBox1","F_ZYKJ_Assistant_dvn","F_ZYKJ_BaseQty","F_ZYKJ_Qty12"
        ],
        "FilterString": "FID='"+ fidpd +"' and F_ZYKJ_BillStatus_83g ='0' and " + filterString,
        "orderby": "",
        "topRowCount": 0,
        "limit": 0,
        "StartRow": 0,
        "fields_name": [
          "实体主键","物料名称","物料编码","规格型号","是否包装","品牌","基本单位数量","成品已拣货数量"
        ],
        "acctID": "66249c7f42e1e4"
      },
      "login": {
        "username": "test",
        "password": "zz333333"
      }
    }
  )
  console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",data);

  // return
  dd.httpRequest({
    url: 'http://cloud.reece-sewing.com:9351/king_query',
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    data: data,
    dataType: 'json',
    success: function (res) {
      if (res.data.code == 200) {
        console.log("订单明细200",res.data);
        var orderMaterialCodeList = res.data.data;
        that.setData({
          wuliaoList: orderMaterialCodeList,
        });

        // 在订单明细获取成功后再获取分解明细数据
        // that.getPurchaseFenjie();

      } else {
        dd.showToast({
          type: 'fail',
          content: res.data.data,
          duration: 2000,
        });
      }
    },
    fail: function (res) {
      console.log("订单明细调用失败",res);
    },
    complete: function (res) {
    }
  });
},

// 分解明细
// getPurchaseFenjie(e) {
//   var that = this;
//   var fidpd = that.data.code
//   console.log("分解明细数据fid",fidpd);

//   var data = JSON.stringify(
//     {
//       "xx": {
//         "formId": "ZYKJ_SCRWD",
//         "fields": [
//           "F_SCRWD_Entry1_FEntryID","F_ZYKJ_BaseProperty4","F_ZYKJ_Base2.fnumber","F_ZYKJ_Base3.fnumber","F_ZYKJ_BaseQty1","F_ZYKJ_Qty_83g","F_ZYKJ_BillStatus_re5"
//         ],
//         "FilterString": "FID='"+ fidpd +"' and F_ZYKJ_BillStatus_re5='0'",
//         "orderby": "",
//         "topRowCount": 0,
//         "limit": 0,
//         "StartRow": 0,
//         "fields_name": [
//           "行id","材料名称","生产对象","材料编码","基本单位数量","拣货数量","拣货状态"
//         ],
//         "acctID": "66249c7f42e1e4"
//       },
//       "login": {
//         "username": "888",
//         "password": "zz111111"
//       }
//     }
//   )

//   dd.httpRequest({
//     url: 'http://cloud.reece-sewing.com:9351/king_query',
//     method: 'POST',
//     headers: {
//       "Content-Type": "application/json"
//     },
//     data: data,
//     dataType: 'json',
//     success: function (res) {
//       if (res.data.code == 200) {
//         console.log("分解明细200",res.data);
//         var orderMateriafenjieList = res.data.data;

//         // 调用mergeData方法将订单明细和分解明细合并
//         var mergedData = that.mergeData(that.data.wuliaoList, orderMateriafenjieList);

//         // 更新页面数据，展示合并后的数据
//         that.setData({
//           mergedData: mergedData
//         });
//         console.log("合并后的数据", that.data.mergedData);

//         const items = that.data.mergedData


//         // 使用 reduce 方法来将 items 按 orderItem 分组
//         const groupedItems = items.reduce((acc, item) => {
//           // 使用 orderItem 的实体主键作为唯一标识符
//           const key = item.orderItem.实体主键;

//           // 如果这个 key 已经存在于累加器中，则添加 fenjieItem 到对应的数组中
//           if (acc[key]) {
//             acc[key].fenjieItems.push(item.fenjieItem);
//           } else {
//             // 否则，创建一个新的分组
//             acc[key] = {
//               orderItem: item.orderItem,
//               fenjieItems: [item.fenjieItem]
//             };
//           }

//           return acc;
//         }, {});

//         // 将 groupedItems 转换为数组格式以便遍历或其他操作
//         const result = Object.values(groupedItems);

//         // 打印或者以其他方式使用 result
//         console.log("这是合并后的对应数据yyyyyyyy",result);

//         that.setData({
//           resultList: result
//         });
//         console.log("这是合并后的对应数据data",that.data.resultList);


//         // 以下都是为了计算未拣货数量111111111111111111111111111111111111111111111111111111111111111111111111111
//         var resultList = that.data.resultList
//         // 遍历resultList中的每个订单项和分解项
//         resultList.forEach(order => {
//           order.fenjieItems.forEach(fenjieItem => {
//             // 计算未拣货数量
//             fenjieItem.未拣货数量 = fenjieItem.基本单位数量 - fenjieItem.拣货数量;
//           });
//         });
//         // 更新页面数据
//         that.setData({
//           resultList: resultList
//         });
//         console.log("这是合并后的对应数据未拣货data",that.data.resultList);


//       } else {
//         dd.showToast({
//           type: 'fail',
//           content: res.data.data,
//           duration: 2000,
//         });
//       }
//     },
//     fail: function (res) {
//       console.log("分解明细调用失败",res);
//     },
//     complete: function (res) {
//     }
//   });
// },

//   // 单选事件
//   onOneChange: function(e) {
//     const index = e.currentTarget.dataset.index;
//     console.log("111111111111",index);
//     const resultList = this.data.resultList;

//     resultList[index].orderItem.selected = !resultList[index].orderItem.selected;         //只针对当前点击的item 就是为了取反
//     this.setData({
//         resultList: resultList
//     });

//     console.log("1111111111111111111111",resultList);

//     // 以下时为了过滤行id
//     const orderItemList = resultList.map(item => item.orderItem);    // 使用 map 方法提取 orderItem 对象
//     console.log("6666",orderItemList);   // 打印提取的 orderItem 对象数组
//     const hangidList = orderItemList.filter(item => item.selected).map(item => item.实体主键);      // 过滤出 selected 为 true 的对象，并提取实体主键属性
//     console.log(hangidList);            // 打印提取的实体主键数组
  
//     this.setData({
//         hangidList: hangidList
//       })
  
// },

// // 全选事件
// onToggleAll: function(e) {
//   const checked = !this.data.allChecked; // 取反当前的全选状态
//   const resultList = this.data.resultList;
//   resultList.forEach(item => {                        //遍历所有的item 就是为了取反
//       item.orderItem.selected = checked;
//   });
//   this.setData({
//       resultList: resultList,
//       allChecked: checked
//   });
//   console.log("1111111111111111111111",resultList);

//   // 以下时为了过滤行id
//   const orderItemList = resultList.map(item => item.orderItem);    // 使用 map 方法提取 orderItem 对象
//   console.log("6666",orderItemList);   // 打印提取的 orderItem 对象数组
//   const hangidList = orderItemList.filter(item => item.selected).map(item => item.实体主键);      // 过滤出 selected 为 true 的对象，并提取实体主键属性
//   console.log(hangidList);            // 打印提取的实体主键数组

//   this.setData({
//       hangidList: hangidList
//     })

// },


  // 单选事件
  onOneChange: function(e) {
    const index = e.currentTarget.dataset.index;
    console.log("111111111111",index);
    const resultList = this.data.wuliaoList;

    resultList[index].selected = !resultList[index].selected;         //只针对当前点击的item 就是为了取反
    this.setData({
      wuliaoList: resultList
    });

    console.log("1111111111111111111111",this.data.wuliaoList);

    // 以下时为了过滤行id
    const orderItemList = this.data.wuliaoList.map(item => item);    // 使用 map 方法提取 orderItem 对象
    console.log("6666",orderItemList);   // 打印提取的 orderItem 对象数组
    const hangidList = orderItemList.filter(item => item.selected).map(item => item.实体主键);      // 过滤出 selected 为 true 的对象，并提取实体主键属性
    console.log(hangidList);            // 打印提取的实体主键数组
  
    this.setData({
        hangidList: hangidList
      })
  
},

// 全选事件
onToggleAll: function(e) {
  const checked = !this.data.allChecked; // 取反当前的全选状态
  const resultList = this.data.wuliaoList;
  resultList.forEach(item => {                        //遍历所有的item 就是为了取反
      item.selected = checked;
  });
  this.setData({
      wuliaoList: resultList,
      allChecked: checked
  });
  console.log("1111111111111111111111",this.data.wuliaoList);

  // 以下时为了过滤行id
  const orderItemList = this.data.wuliaoList.map(item => item);    // 使用 map 方法提取 orderItem 对象
  console.log("6666",orderItemList);   // 打印提取的 orderItem 对象数组
  const hangidList = orderItemList.filter(item => item.selected).map(item => item.实体主键);      // 过滤出 selected 为 true 的对象，并提取实体主键属性
  console.log(hangidList);            // 打印提取的实体主键数组

  this.setData({
      hangidList: hangidList
    })

},

  onTap(e) {
    console.log('onTap', e)
  },

  onInput(e) {
    // 异步返回错误示例
    setTimeout(() => {
      this.setData({
        error: 'error 222'
      })
    }, 3000);
    console.log('onInput', e.detail.value)
  },

  onBlur(e) {
    console.log('onBlur', e.detail)
  },

   // 下推成品拣货单
  onPrimCpTap(e){
    var that = this
    console.log('提交按钮触发了', e);
    var hangidList = that.data.hangidList.map(String);
    console.log("下推接口调用行id", hangidList);
    var data = JSON.stringify(
      {
        "push": {
          "formid": "ZYKJ_SCRWD",
          "RuleId": "d0fffa34-a884-4340-9d9e-f2168fbcef8f",
          "Ids": [],
          "EntryIds": hangidList,
          "IsDraftWhenSaveFail": false
        },
        "login": {
          "acctID": "66249c7f42e1e4",
          "url": "192.168.17.253",
          "username": "test",
          "password": "zz333333"
        }
      }
    )

    my.showLoading({
      content: '',
    })
    console.log("点击提交创建的data",data);
  
    dd.httpRequest({
      url: 'http://cloud.reece-sewing.com:9351/king_push_down',
      method: 'POST',
      headers: {
        "Content-Type": "application/json"
      },
      data: data,
      dataType: 'json',
      success: function (res) {
        if(res.data.code == 200){
        // console.log("下推按钮的success响应200======》",res);
        console.log('下推响应==>',JSON.parse(res.data.data))
        var dataxiatui = JSON.parse(res.data.data)
        console.log("ttttttttttt",dataxiatui);
        console.log("idddddddddddddddd====>",dataxiatui.Result.ResponseStatus.SuccessEntitys[0].Id);

        dd.confirm({
          title: '温馨提示',
          content: '是否确认下推',
          confirmButtonText: '确定下推',
          cancelButtonText: '暂不需要',
          success: (result) => {
            console.log(result);
            if (result.confirm) {
              dd.navigateTo({
                // url: '/pages/login/login?stop=1'
                url: '/pages/purchaseTwos/purchaseTwos?id=' + dataxiatui.Result.ResponseStatus.SuccessEntitys[0].Id
              })

              my.hideLoading(); // 隐藏 loading 提示框
            }else {
              // 用户点击"暂不需要"的逻辑
              my.hideLoading(); // 取消 loading 提示框
            }
    
          },
        });
        // 1

        my.hideLoading();
        }else{
          my.hideLoading(); // 隐藏 loading 提示框

        
        dd.alert({ content: errorMessage });
       
          console.log("采购入库单修改提交按钮的code!=200响应",res);
        }
     
      },
      fail: function (res) {
        // dd.alert({ content: 'fail' });
        // dd.showToast({
        //   type: 'fail',
        //   content: res.errorMessage,
        //   duration: 2000,
        // });
        console.log("提交按钮的fail响应",res);
        my.hideLoading();
      },
      complete: function (res) {
        // console.log("提交按钮的complete响应",res);

        // dd.alert({ content: 'complete' });
        my.hideLoading();
      }
    });
  },

    // 下推采购成品拣货单
  onPrimCgCpTap(e){
    var that = this
    console.log('提交按钮触发了', e);
    var hangidList = that.data.hangidList.map(String);
    console.log("下推接口调用行id", hangidList);
    var data = JSON.stringify(
      {
        "push": {
          "formid": "ZYKJ_SCRWD",
          "RuleId": "bb6c3983-aef6-4bae-9cdf-d5d0fc409d01",
          "Ids": [],
          "EntryIds": hangidList,
          "IsDraftWhenSaveFail": false
        },
        "login": {
          "acctID": "66249c7f42e1e4",
          "url": "192.168.17.253",
          "username": "test",
          "password": "zz333333"
        }
      }
    )

    my.showLoading({
      content: '',
    })
    console.log("点击提交创建的data",data);
  
    dd.httpRequest({
      url: 'http://cloud.reece-sewing.com:9351/king_push_down',
      method: 'POST',
      headers: {
        "Content-Type": "application/json"
      },
      data: data,
      dataType: 'json',
      success: function (res) {
        if(res.data.code == 200){
        // console.log("下推按钮的success响应200======》",res);
        console.log('下推响应==>',JSON.parse(res.data.data))
        var dataxiatui = JSON.parse(res.data.data)
        console.log("ttttttttttt",dataxiatui);
        console.log("idddddddddddddddd====>",dataxiatui.Result.ResponseStatus.SuccessEntitys[0].Id);

        dd.confirm({
          title: '温馨提示',
          content: '是否确认下推',
          confirmButtonText: '确定下推',
          cancelButtonText: '暂不需要',
          success: (result) => {
            console.log(result);
            if (result.confirm) {
              dd.navigateTo({
                // url: '/pages/login/login?stop=1'
                url: '/pages/purchaseTwos/purchaseTwos?id=' + dataxiatui.Result.ResponseStatus.SuccessEntitys[0].Id
              })

              my.hideLoading(); // 隐藏 loading 提示框
            }else {
              // 用户点击"暂不需要"的逻辑
              my.hideLoading(); // 取消 loading 提示框
            }
    
          },
        });
        // 1

        my.hideLoading();
        }else{
          my.hideLoading(); // 隐藏 loading 提示框

        
        dd.alert({ content: errorMessage });
        
          console.log("采购入库单修改提交按钮的code!=200响应",res);
        }
      
      },
      fail: function (res) {
        // dd.alert({ content: 'fail' });
        // dd.showToast({
        //   type: 'fail',
        //   content: res.errorMessage,
        //   duration: 2000,
        // });
        console.log("提交按钮的fail响应",res);
        my.hideLoading();
      },
      complete: function (res) {
        // console.log("提交按钮的complete响应",res);

        // dd.alert({ content: 'complete' });
        my.hideLoading();
      }
    });
  },

  onConfirm(e) {
    console.log('onConfirm', e.detail.value)
  },
  onClear(e) {
    console.log('onClear', e.detail.value)
  },
  onCheckValidate(value) {
    // 同步返回错误示例
    return 'error'
  },
  onFocus(e) {
    console.log('onFocus', e)
  },
  // 前往日历选择
  // toCalendar() {
  //   dd.navigateTo({
  //     url: '/pages/calendar/calendar',
  //   })
  // },

});
